/*
 *!
 * 通用js
 * @author 蒋正强
 */


/**
 * 刷新bootstrap-table
 */
function refreshBootStrapTab(){
    $("button[name=refresh]").click();
}



function ajax(url, senddata, handler, method) {

    $.ajax({
        url: url,
        type: method,
        data: senddata,
        dataType: "json",
        async: false,
        success: handler,
        error: function (msg) {
            layer.alert("系统错误 ！" + msg);
        },
        complete: function (XMLHttpRequest, status) {
            if (status == 'timeout') {
                ajaxTimeoutTest.abort();
                layer.alert("请求超时，请检查网络状态！");
            }
        }
    });
}



/**
 * 数据联动加载数据
 * @param id 查询条件的id
 * @param dataName 所要查询的数据类型名称 如查询Student实体 传入Student
 * @param paramId 回显参数
 */
function getChildData(requestUrl, id, dataName, paramData) {
    var ctrl = ("#") + dataName + "Id option";  // 例如，加载城市就传省份id 页面必须有形如provinceId的id
    //先删除原来的数据
    //$(ctrl).filter(function () {
     //   return this.innerHTML.indexOf("所有") != 0;
    //}).remove();
    $(ctrl).remove();


    /**
     * select2 多选下拉框的回显
     *      1. 获取需要回显的thisBlogId
     *      2. 根据thisBlogId查询blogTag表，获取其中blogId == thisBlogId的tagIds
     *      3. 根据
     */
    ajax(requestUrl, {id:id}, function(result){

        //	获取页面原来的状态
        var oldId = " ";

        //遍历json数组
        $(result).each(function (i) {
            var $Id = $("#" + dataName + "Id");

            //for()
            //相等说明就要回显
            if ("0" == result[i].id && oldId != "")
                $Id.append("<option value=" + result[i].id + " selected='selected'>" + result[i].name + "</option>");
            else
                $Id.append("<option value=" + result[i].id + ">" + result[i].name + "</option>");
        });
    }, "post");
}




/**
 *  发送保存请求，id求为空时为新增,不为空就是编辑
 *  form表单必须有id， 格式为类名+Form eg. studentForm
 *  @param dataName
 *          所需操作的类名(全小写) eg. student
 */
function doSave(dataName) {
    event.preventDefault(); // 阻止submit默认提交
    $('#myModal').modal('hide');    // 隐藏modal框
    var $form = $("#" + dataName + "Form");
    ajax($form.attr("action"), $form.serialize(), function (result) {
        if ("1" != result.status)
            layer.alert("保存失败");

    }, "post");

    $("button[name=refresh]").click();  //刷新页面

}


/**
 * 单个删除
 * @param id
 * @param url
 */
function deleteById(id, url) {
    event.preventDefault();

    layer.confirm('确定要删除吗?', {
        btn: ['确定', '取消']
    }, function () {

        ajax(url, {id: id}, function (result) {
            if (result.status == "0")
                layer.alert("删除失败");

            layer.close( );

        }, "post");

        $("button[name=refresh]").click();  //刷新页面

    }, function () {

    });
}


/**
 * 根据ids删除对应数据
 * @param url
 *      请求地址
 * @param token
 *      token 重复请求标志
 * @returns {boolean}
 */
function doDeletes(url) {
    var params = $("#myTable").bootstrapTable('getSelections');  // 获取选择项
    var ids = "";

    if (params.length === 0) {
        layer.alert("请选择一条数据");
        return false;
    }

    layer.confirm('确定要删除吗?', {
        btn: ['确定', '取消']
    }, function () {

        for (var i = 0; i < params.length; i++) {
            if (i < (params.length - 1))
                ids += params[i].id + "&";
            else
                ids += params[i].id;
        }

        if (!ids || "" === ids || null === ids) {
            layer.alert("删除失败");
            return false;
        }

        ajax(url, {pkStr: ids, separatorChar: '&'}, function (result) {
            if ("1" != result.status)
                layer.alert("删除失败");
            //var index = parent.layer.getFrameIndex(window.name)
            layer.close(layer.index);   // layer.index 获取的事最新的弹出层的index
        }, "post");

        //window.location.reload(); //刷新页面
        $("button[name=refresh]").click();  //刷新页面

    }, function () {
        // layer.msg('也可以这样', {
        //     time: 20000, //20s后自动关闭
        // });
    });


}

/**
 * 首字母大写
 * @param str
 */
function capitalize(str) {

    var result = str.substring(0, 1).toUpperCase() + str.substring(1);
    // console.log(result);
    return result;
}


